标签:变量 参数 公有 检查 code 必须 存在 strong doc
实例化类
变量 = 类名() #实例化了一个对象
使用点操作符
obj.成员属性名称
obj.成员方法
对象所有成员检查
# dict前后各有两个下划线
obj.__dict__
类所有的成员
# dict前后各有两个下划线
class_name.__dict__
案例
# 创建类
class Person():
# 类变量
name = 'chenpingan'
age = 18
# 方法
def say(self):
print('hello world')
# 实例化
p = Person()
p.say()
# 查看对象成员
print(p.__dict__)
print(Person.__dict__)
>>>
hello world
{}
{'__module__': '__main__', 'name': 'chenpingan', 'age': 18, '__init__': <function Person.__init__ at 0x7f87ec138510>, 'say': <function Person.say at 0x7f87ec138400>,
'__dict__': <attribute '__dict__' of 'Person' objects>, '__weakref__': <attribute '__weakref__' of 'Person' objects>, '__doc__': None}
案例
# 创建类
class A():
name = "dana"
age = 18
# 注意say的写法,参数由一个self
def say(self):
self.name = "aaaa"
self.age = 200
# 此案例说明
# 类实例的属性和其对象的实例的属性在不对对象的实例属性赋值的前提下,
# 指向同一个变量
# 此时,A称为类实例
print(A.name)
print(A.age)
print("*" * 20)
# id可以鉴别一个变量是否和另一个变量是同一变量
print(id(A.name))
print(id(A.age))
print("*" * 20)
a = A()
# 查看A内所有的属性
print(A.__dict__)
print(a.__dict__)
a.name = "yaona"
a.age = 16
print(a.__dict__)
print(a.name)
print(a.age)
print(id(a.name))
print(id(a.age))
>>>
dana
18
********************
140666260313176
93936169025280
********************
{'__module__': '__main__', 'name': 'dana', 'age': 18, 'say': <function A.say at 0x7fef6a799730>, '__dict__': <attribute '__dict__' of 'A' objects>, '__weakref__': <attribute
'__weakref__' of 'A' objects>, '__doc__': None}
{}
{'name': 'yaona', 'age': 16}
yaona
16
140666251554240
93936169025216
案例
# __class__.属性
class Teacher():
name = "dana"
age = 19
def say(self):
self.name = "yaona"
self.age = 17
print("My name is {0}".format(self.name))
# 调用类的成员变量需要用 __class__
print("My age is {0}".format(__class__.age))
def sayAgain():
print(__class__.name)
print(__class__.age )
print("Hello, nice to see you again")
t = Teacher()
t.say()
# 调用绑定类函数使用类名
Teacher.sayAgain()
>>>
My name is yaona
My age is 19
dana
19
Hello, nice to see you again
案例
# 关于self的案例
class A():
name = " liuying"
age = 18
def __init__(self):
self.name = "aaaa"
self.age = 200
def say(self):
print(self.name)
print(self.age)
class B():
name = "bbbb"
age = 90
a = A()
# 此时,系统会默认把a作为第一个参数传入函数
a.say()
# 此时,self被a替换
A.say(a)
# 同样可以把A作为参数传入
A.say(A)
# 此时,传入的是类实例B,因为B具有name和age属性,所以不会报错
A.say(B)
# 以上代码,利用了鸭子模型
>>>
aaaa
200
aaaa
200
liuying
18
bbbb
90
标签:变量 参数 公有 检查 code 必须 存在 strong doc
原文地址:https://www.cnblogs.com/chenpingan-cc/p/12324354.html