内置属性
创建类时系统自动创建的属性
# 内置属性:dir(对象),列出所有的内置属性
class Person(object):'''Person类1'''# Person类2__slots__ = ('name', 'age')def __init__(self, name, age):self.name = nameself.age = agedef eat(self):print("eat!!!")p = Person('name',17)
print(dir(p))
# 输出
# ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'eat']
print(p.__class__)
#将对象所支持的所有属性和函数列出。
print(p.__dir__)
#显示的是多行注释
print(p.__doc__)
print(Person.__doc__)
#主方法
print(p.__module__)
对象属性
类属性
# 类属性
class Person(object):type = 'mm'__slots__ = ('name', 'age')def __init__(self, name, age):self.name = nameself.age = agedef eat(self):print("eat!!!")p=Person('name',19)
#通过对象和类名调用类属性
print(p.type)
print(Person.type)
#只能通过类名修改类属性
Person.type='upq'
print(Person.type)
print(p.type)
#输出
# mm
# mm
# upq
# upq
私有属性
# 私有属性
class Teacher():def __init__(self):self.__name='ert'self.__level=99#获取老师的等级def get_level(self):return self.__level#获取名字def get_in_name(self):return self.__namedef set_in_name(self,name):self.__name=name
t=Teacher()
# #获取私有属性1
print("name is",t._Teacher__name) #输出GG
t._Teacher__name="AA" #被改变了
print("name is",t._Teacher__name) #输出AA
#获取私有属性2
t.set_in_name('pppp')
print(t.get_in_name())#输出
# name is GG
# name is AA
# pppp
私有方法
#function:私有方法
class Person(object):def __init__(self):self.__p=100def __xx(self):print(self.__p)
p1=Person()
print(p1._Person__p)
p1._Person__xx()
实例方法
类方法
静态方法
总结:实例方法 & 类方法 & 静态方法
静态方法:当用不到当前类和对象属性时(感觉与当前类没关系一样),可以定义为静态方法(一个定义在类中的普通方法)
# author:dq
# project:PythonProject
# date:2021年10月21日
# function:实例方法 & 类方法 & 静态方法class Person():type = 'type'__slots__ = ('name', 'age')def __init__(self, name, age):self.name = nameself.age = age# 实例方法def common(self):print('common')# 类方法@classmethoddef classmethod(cls):cls.type = 'class type'print(cls.type)print('classmethod')# 静态方法@staticmethoddef staticmethod():print('static')
p=Person('name',77)
#对象调用
p.common()
p.classmethod()
p.staticmethod()
#类调用
Person.common(p)
Person.classmethod()
Person.staticmethod()