一、面向对象(二)、属性 和 方法:
1、类属性和实列属性重名了,对象访问属性时,是访问类还是实列自己的? 实列自己的;
2、在类中,实列方法可以调用其他实列方法吗? 可以;
3、在类中的实列方法中可以给对象设置属性吗 ?
可以,但是不建议这样做,同时pycharm报警告;
动态添加属性,只有在调用方法后才会生效 ;
4、类中方法的参数,可以是其他类的实列对象吗? 可以是
5、给当前对象添加属性,该属性只属于该对象,其他对象调用会报错 ;
示例代码如下:
# 1a、类属性和实列属性重名了,对象访问属性时,是访问类还是实列自己的? 实列自己的; class Cat(): color = '黄色' def __init__(self, name, color): self.name = name self.color = color def get_color(self): print(self.color) def show_color(self): self.get_color() c = Cat('加菲', '灰色') c.get_color() # 1b、有类属性,但无实例属性,访问时,访问的是类属性 ; class Cat(): color = '黄色' def __init__(self, name): self.name = name def get_color(self): print(self.color) c = Cat('加菲') c.get_color() # 2、在类中,实列方法可以调用其他实列方法吗? 可以; class Dog(): def __init__(self, name, color): self.name = name self.color = color def get_color(self): print(self.color) def show_color(self): self.get_color() d = Dog('加菲', '黑色') d.show_color() # 3、在类中的实列方法中可以给对象设置属性吗 ? # 可以,但是不建议这样做,同时pycharm报警告; # 动态添加属性,只有在调用方法后才会生效 ; class Monkey(): def __init__(self, name, color): self.name = name self.color = color def set_weight(self, weight): self.weight = weight def show_weight(self): print(self.weight) m = Monkey('加菲', '黑色') m.set_weight(3) m.show_weight() # 4、类中方法的参数,可以是其他类的实列对象吗? 可以是 class Duck(): def __init__(self, name): self.name = name class Person(): def __init__(self, name): self.name = name def eat(self, duck): print('{0}吃{1}'.format(self.name, duck.name)) d = Duck('烧鸭') p = Person('八戒') p.eat(d) # 5、给当前对象添加属性,该属性只属于该对象,其他对象调用会报错 ; class Chicken(): def __init__(self, name): self.name = name chicken_a = Chicken('鸡名字A') chicken_a.gender = '母鸡' print(chicken_a.name, chicken_a.gender) chicken_b = Chicken('鸡名字B') print(chicken_b.name, chicken_b.gender) # gender 属性只属于 chicken_a 对象,chicken_b调用的话会报错 # AttributeError: 'Chicken' object has no attribute 'gender'View Code
执行结果如下:
Traceback (most recent call last): File "D:/SkyWorkSpace/WorkSpace/Pytest/Temp/day10/test_01/test_02.py", line 232, in <module> print(chicken_b.name, chicken_b.gender) AttributeError: 'Chicken' object has no attribute 'gender' 灰色 黄色 黑色 3 八戒吃烧鸭 鸡名字A 母鸡 Process finished with exit code 1View Code