python之面向对象,python是面向对象吗,(一)构造方法和实例


(一)构造方法和实例方法

__init__() 为构造方法,第一个参数必须为 self 参数。

self 代表该方法的调用者,即谁在调用该方法,那么 self 就代表谁。

类里面的jump()和run()方法为实例方法。

代码:

 1     class Dog: 2         def __init__(self): 3             print(self,"在调用构造方法") 4         # 定义一个jump()方法 5         def jump(self): 6             print(self,"正在执行jump方法") 7         # 定义一个run()方法,run()方法需要借助jump()方法 8         def run(self): 9             print(self,"正在执行run方法")10             # 使用self参数引用调用run()方法的对象11             self.jump()12     dog1 = Dog()13     dog1.run()14     dog2 = Dog()15     dog2.run()

结果:

<__main__.Dog object at 0x00000276B14B12B0> 在调用构造方法<__main__.Dog object at 0x00000276B14B12B0> 正在执行run方法<__main__.Dog object at 0x00000276B14B12B0> 正在执行jump方法<__main__.Dog object at 0x00000276B14B1F28> 在调用构造方法<__main__.Dog object at 0x00000276B14B1F28> 正在执行run方法<__main__.Dog object at 0x00000276B14B1F28> 正在执行jump方法

(二)类属性和实例属性

(1)类变量

类变量推荐直接用类名访问,但也可以使用对象名访问。

代码:

 1 class Address: 2     detail = ‘广州‘ 3     post_code = ‘510660‘ 4  5     def info(self): 6         # 尝试直接访问类变量 7         # print(detail) # 报错 8         # 通过类来访问类变量 9         print(Address.detail)  # 输出 广州10         print(Address.post_code)  # 输出 51066011 12 13 # 创建 2 个类对象14 addr1 = Address()15 addr1.info()16 addr2 = Address()17 addr2.info()18 # 修改Address类的类变量19 Address.detail = ‘佛山‘20 Address.post_code = ‘460110‘21 addr1.info()22 addr2.info()23 24 #动态地为类和对象添加类变量25 Address.depict = "佛山很美"26 print(addr1.depict)27 print(addr2.depict)

结果:

广州510660广州510660佛山460110佛山460110佛山很美佛山很美

(2)实例变量

实例变量只能通过对象名访问,无法通过类名直接访问。

代码:

未完待续 剩下的明天学

python之面向对象

评论关闭