ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

002、面向对象(二)、属性 和 方法

2021-08-01 13:34:35  阅读:141  来源: 互联网

标签:__ name 面向对象 color self 实列 002 def 属性


 

一、面向对象(二)、属性 和 方法:

  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 1
View Code

 

标签:__,name,面向对象,color,self,实列,002,def,属性
来源: https://www.cnblogs.com/qq-2780619724/p/15086502.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有