kaedah kelas

1. Kaedah khusus kelas

Apabila kelas diwujudkan, ia akan mengandungi beberapa kaedah, terutamanya kaedah berikut:

Kaedah khusus kelas:

Pembina, dipanggil semasa menjana objek __del__ Destructor, digunakan semasa melepaskan objek __repr__ repr__ Tetapkan nilai mengikut indeks Metret nilai mengikut indeks Mengambilkan Panjang Comparison OperationFunction Calladdition Operasi__sub__ Operasi tolak__mul__ Operasi darab__div__ Operasi bahagi operasi utama__pow__ Powered

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:

Meneruskan pembelajaran

  • Cadangan kursus
  • Muat turun perisian kursus
Deskripsi Kaedah __init__
__setitem__
__getItem__
__Len__
__CMP__
__Call__
__Add__