Python sınıfı tanımı sözdizimi


95

Arasında bir fark var mı

class A:
    ...

ve

class A():
    ...

Birkaç sınıfımın eski olarak tanımlandığını ve gayet iyi çalıştığını yeni fark ettim. Boş parantez herhangi bir fark yaratır mı?

Yanıtlar:


23

İkincisi, Python'un eski sürümlerinde bir sözdizimi hatasıdır. Python 2.x'te object, mümkün olduğunda türetmelisiniz, çünkü birkaç kullanışlı özellik yalnızca yeni stil sınıflarında mevcuttur ( objectyeni stil sınıfları orada varsayılan olduğu için Python 3.x'te türetmek isteğe bağlıdır).


7
Python 3'te artık doğru değil; objectsaçmalıklardan kaynaklanan her şey otomatik olarak halledilir.
temporary_user_name

4
Was class A()hiç bir sözdizimi hatası? Python 1.4 docs 's cezası söylemek ve bu hala python.org geçerli en eski belgeler bulunmaktadır.
user2357112 Monica'yı

90

Bir sınıf tanımında boş parantezlerin kullanılması sözdizimsel olarak yanlış olmasa da, bir sınıf tanımından sonra parantezler kalıtımı belirtmek için kullanılır, örneğin:

class A(baseClass):
    ...

Python'da, herhangi bir temel sınıf içermeyen bir sınıf bildirimi için tercih edilen sözdizimi basitçe şöyledir:

class A:
    ...

Diğer sınıfları alt sınıflara ayırmadığınız sürece parantez kullanmayın.

Konuyla ilgili belgeler, Python'da sınıfları nasıl bildireceğiniz ve kullanacağınız konusunda size daha iyi bir anlayış sağlamalıdır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.