![](/img/trans.png)
[英]Check if instance of python class has attribute without instantiating the class
[英]Python - Instantiating a class without assigning a name to the instance
Python 新手在這里!
下面的示例是關於實例化 class 然后為實例分配名稱與不分配實例化之間的區別。
在示例的最后三行中,首先在實例 (my_city) 上調用該方法,然后在沒有實例的情況下調用該方法。 所以:
class City:
def __init__(self, name):
self.name = name
def show_city_name(self):
print(self.name)
my_city = City("Tokyo")
my_city.show_city_name()
City("Tokyo").show_city_name()
City("Tokyo").show_city_name()
語句導致創建類型為<class '__main__.City'>
的臨時實例,在該實例上調用show_city_name()
方法。
所以,實例仍然被創建,認為它沒有與任何對它的引用綁定。 我們可以說 object 在City("Tokyo")
表達式中。 看看這個:
>>> type(City('Foo'))
<class '__main__.City'> # Means it is an instance of the City class
當您擁有static
class 方法或@classmethod
裝飾器時,可以看到幾乎相同類型的方法(看似直接在 class 上調用方法)。 例如:
class Circle:
def __init__(self, radius):
self.radius = radius
# other definitions
@classmethod
def unit_circle(cls):
return cls(1)
unit_c = Circle.unit_circle()
print(unit_c.radius)
# Prints 1
這是在現實世界代碼中做同樣事情的更正確和更有可能的方式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.