Summary: Object-oriented programming (OOP), it is a programming idea. OOP object as the basic unit of the program, an object contains function data and operational data. Object-oriented main features are: encapsulation, inheritance, polymorphism
A class definition:
class ClassName(基类):
"""类相关描述"""
# 定义实例变量、方法
Access II instance attributes Method
People define classes, inheritance object class that have attributes: name, age, sex
class People(object):
def __init__(self, name, age, sex):
self.__name = name
self.__age = age
self.__sex = sex
NOTE: __ init__ constructor method, the first parameter python example of a method of self keyword class, the representative instance itself. Class attribute defines a double underscore (__) at the beginning, represents private property, outside inaccessible.
Properties can be accessed, set accessed via the Java-like language get, such as:
class People(object):
def __init__(self, name, age, sex):
self.__name = name
self.__age = age
self.__sex = sex
def get_name(self):
return self.__name
def set_name(self, name):
self.__name = name
def get_age(self):
return self.__age
def set_age(self, age):
self.__age = age
def get_sex(self):
return self.__sex
def set_sex(self, sex):
self.__sex = sex
You may also be defined by a decorative special methods, such as:
class People(object):
def __init__(self, name, age, sex):
self.__name = name
self.__age = age
self.__sex = sex
@property
def name(self):
return self.__name
@name.setter
def name(self, name):
self.__name = name
@property
def age(self):
return self.__age
@age.setter
def age(self, age):
self.__age = age
@property
def sex(self):
return self.__sex
@sex.setter
def sex(self, sex):
self.__sex = sex
def say_hello(self):
print("My name is {}, I am {} years old, I am {}".format(self.__name, self.__age, self.__sex))
def __dict__(self):
return {"name": self.name, "age": self.age, "sex": self.sex}
if __name__ == "__main__":
people = People("wangwu", 18, 'boy')
print(people.get_name(), end=" ")
people.set_name("lisi")
print(people.get_name())
people1 = People("wangwu", 18, 'boy')
print(people1.name, end=" ")
people1.name = "lisi"
print(people1.name)
Both the same output:
wangwu lisi
wangwu lisi
Third, inherit
inheritance can get all the properties and methods of the parent class, multiple inheritance can be passed
class ClassName(基类1,基类2):
"""类相关描述"""
# 定义实例变量、方法
Example: Writing student class, inherits all non-private properties of the parent class of class People
class Student(People):
def __init__(self, name, age, sex, grade, score):
# 调用父类的构造函数
People.__init__(self, name, age, sex)
self.__grade = grade
self.__score = score
@property
def grade(self):
return self.__grade
@grade.setter
def grade(self, grade):
self.__grade = grade
@property
def score(self):
return self.__score
@score.setter
def score(self, score):
self.__score = score
def say_hello(self):
# 调用父类方法
super().say_hello()
print("My grade is {}, My score is {}".format(self.grade, self.score))
def __dict__(self):
# 通过get、set方法可以访问父类私有属性
return {"name": self.name, "age": self.age, "sex": self.sex, "grade": self.grade, "score": self.score}