Contoh yang boleh saya fikirkan ialah kaedah kelas sering digunakan sebagai pengganti untuk pembina (__init__).
Berikut ialah contoh mudah:
class Calculator:
def __init__(self, *numbers):
self.numbers = numbers
def sum(self):
return sum(self.numbers)
def avg(self):
return sum(self.numbers)/len(self.numbers)
if __name__ == '__main__':
c = Calculator(1,2,3,4,5)
print(c.sum())
print(c.avg())
Ini adalah kelas kalkulator yang tidak berguna, tetapi jangan risau tentangnya Apakah yang perlu saya lakukan jika saya ingin membina kelas ini diberi urutan (Senarai atau Tuple)?
Kami boleh menggunakan kaedah kelas dengan mudah untuk melaksanakan penggantian pembina Sebab utama ialah parameter kaedah kelas pertama menerima objek kelas, yang membolehkan kami memproses hujah yang dihantar oleh kaedah kelas kepada pembina standard, mencipta objek menggunakan kelas objek dan mengembalikannya.
Jika perkara ini diserahkan kepada kaedah contoh, akan ada kaedah penukaran tambahan menggunakan type(self) Menggunakan kaedah statik memerlukan pengekodan keras nama kelas dalam kaedah, yang tidak begitu sesuai:
Contoh yang boleh saya fikirkan ialah kaedah kelas sering digunakan sebagai pengganti untuk pembina (
__init__
).Berikut ialah contoh mudah:
Ini adalah kelas kalkulator yang tidak berguna, tetapi jangan risau tentangnya Apakah yang perlu saya lakukan jika saya ingin membina kelas ini diberi urutan (Senarai atau Tuple)?
Malah, hanya gunakan ungkapan bintang:
Tetapi kaedah kelas ialah pilihan lain pada masa ini:
Kami boleh menggunakan kaedah kelas dengan mudah untuk melaksanakan penggantian pembina Sebab utama ialah parameter kaedah kelas pertama menerima objek kelas, yang membolehkan kami memproses hujah yang dihantar oleh kaedah kelas kepada pembina standard, mencipta objek menggunakan kelas objek dan mengembalikannya.
Jika perkara ini diserahkan kepada kaedah contoh, akan ada kaedah penukaran tambahan menggunakan
type(self)
Menggunakan kaedah statik memerlukan pengekodan keras nama kelas dalam kaedah, yang tidak begitu sesuai:Jika anda ingin mengetahui lebih lanjut tentang kaedah contoh, kaedah kelas dan kaedah statik, anda boleh merujuk kepada:
Dalam keadaan apakah kaedah statik Python harus digunakan?
Panduan muktamad tentang cara menggunakan kaedah statik, kelas atau abstrak dalam Python
Soalan yang saya jawab: Python-QA
Tunggu sebentar dan tulis contoh~
python3
Kedua-dua类方法
dan静态方法
boleh mengakses类
类变量
, tetapi bukan实例变量
.静态变量
, nampaknya闭包
hanya boleh dicapai melalui静态变量
dalam python.