Sudah tentu kadangkala kita perlu mendapatkan maklumat yang berkaitan tentang kelas Kita boleh menggunakan kaedah berikut:
type(obj): untuk mendapatkan jenis objek yang sepadan
isinstance(obj, type): untuk menentukan sama ada objek adalah daripada jenis yang ditentukan. , jika tiada atribut yang sepadan, kembalikan nilai lalai ( Premisnya ialah lalai ditetapkan), jika tidak, pengecualian AttributeError akan dilemparkan
setattr(obj, attr, value): Tetapkan nilai atribut/kaedah, serupa dengan obj.attr=value;
dir(obj): Ya Dapatkan senarai semua atribut dan nama kaedah objek yang sepadan:
2 Kawalan akses kaedah Malah, kita juga boleh menganggap kaedah sebagai atribut kelas, jadi kawalan akses kaedah adalah sama dengan atribut Tidak ada kaedah persendirian. Segala-galanya bergantung pada pengaturcara untuk secara sedar mematuhi piawaian pengaturcaraan Python. Contohnya seperti berikut, peraturan khusus adalah sama dengan sifat,
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
class User(object):
def upgrade(self):
pass
def _buy_equipment(self):
pass
def __pk(self):
pass
3 Penghias kaedah@classmethod dipanggil terus menggunakan nama kelas dan bukannya objek@property boleh diakses seperti The. kaedah panggilan adalah sama dengan atribut
Lihat contoh penggunaan khusus:
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
class UserInfo(object):
lv = 5
def __init__(self, name, age, account):
self.name = name
self._age = age
self.__account = account
def get_account(self):
return self.__account
@classmethod
def get_name(cls):
return cls.lv
@property
def get_age(self):
return self._age
if __name__ == '__main__':
userInfo = UserInfo('两点水', 23, 347073565);
# 打印所有属性
print(dir(userInfo))
# 打印构造函数中的属性
print(userInfo.__dict__)
# 直接使用类名类调用,而不是某个对象
print(UserInfo.lv)
# 像访问属性一样调用方法(注意看get_age是没有括号的)
print(userInfo.get_age)
Hasil operasi:
bahagian seterusnya
|