рдирдорд╕реНрдХрд╛рд░, рд╣реЗрдмреНрд░! рдореИрдВ рдЬреЙрди рдлрд┐рдВрдЪрд░ рдХреЗ рд▓реЗрдЦ "рдСрдмреНрдЬреЗрдХреНрдЯ-рдУрд░рд┐рдПрдВрдЯреЗрдб рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдЗрди рдкрд╛рдпрдерди рдмрдирд╛рдо рдЬрд╛рд╡рд╛" рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдЖрдкрдХреЗ рд╕рд╛рдордиреЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реВрдВред
рдЬрд╛рд╡рд╛ рдФрд░ рдкрд╛рдпрдерди рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ-рдУрд░рд┐рдПрдВрдЯреЗрдб рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ (OOP) рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЕрд▓рдЧ рд╣реИред рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдкреНрд░рдХрд╛рд░, рдЪрд░ рдХреЗ рдкреНрд░рдХрд╛рд░ рдФрд░ рдЕрдиреНрдп рднрд╛рд╖рд╛ рдХреНрд╖рдорддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рд╕рд┐рджреНрдзрд╛рдВрдд рдПрдХ рднрд╛рд╖рд╛ рд╕реЗ рджреВрд╕рд░реА рднрд╛рд╖рд╛ рдореЗрдВ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдореЗрдВ рдХрдард┐рдирд╛рдИ рдкреИрджрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдЖрд▓реЗрдЦ, рдЬреЛ рдЬрд╛рд╡рд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдкрд╛рдпрдерди рд╕реАрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдФрд░ рдкрд╛рдпрдерди рдкреНрд░реЛрдЧреНрд░рд╛рдорд░, рдЬреЛ рдЬрд╛рд╡рд╛ рдХреЛ рдмреЗрд╣рддрд░ рд╕реАрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдХреЗ рд▓рд┐рдП OOP рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдЗрди рднрд╛рд╖рд╛рдУрдВ рдХреЗ рдмреАрдЪ рдореБрдЦреНрдп рд╕рдорд╛рдирддрд╛рдПрдВ рдФрд░ рдЕрдВрддрд░ рд╣реИрдВред
рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг - рдХрдЯреМрддреА рдХреЗ рддрд╣рддред
рдкрд╛рдпрдерди рдФрд░ рдЬрд╛рд╡рд╛ рдореЗрдВ рд╡рд░реНрдЧ рдЙрджрд╛рд╣рд░рдг
рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рдЗрди рднрд╛рд╖рд╛рдУрдВ рдХреЗ рдХреБрдЫ рдЕрдВрддрд░реЛрдВ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рдпрдерди рдФрд░ рдЬрд╛рд╡рд╛ рдореЗрдВ рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╡рд░реНрдЧ рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВ, рдФрд░ рд╣рдо рдзреАрд░реЗ-рдзреАрд░реЗ рдЗрд╕ рд╡рд░реНрдЧ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХрд░реЗрдВрдЧреЗред
рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЬрд╛рд╡рд╛ рдореЗрдВ рдХрд╛рд░ рд╡рд░реНрдЧ рдХреА рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░рд┐рднрд╛рд╖рд╛ рд╣реИ:
1 public class Car { 2 private String color; 3 private String model; 4 private int year; 5 6 public Car(String color, String model, int year) { 7 this.color = color; 8 this.model = model; 9 this.year = year; 10 } 11 12 public String getColor() { 13 return color; 14 } 15 16 public String getModel() { 17 return model; 18 } 19 20 public int getYear() { 21 return year; 22 } 23 }
рд╕реНрд░реЛрдд рдЬрд╛рд╡рд╛ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдо рдЙрд╕рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╡рд░реНрдЧ рдХреЗ рдирд╛рдо рд╕реЗ рдореЗрд▓ рдЦрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдо Car.java рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред рдкреНрд░рддреНрдпреЗрдХ рдЬрд╛рд╡рд╛ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡рд░реНрдЧ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдкрд╛рдпрдерди рдореЗрдВ рдПрдХ рд╣реА рд╡рд░реНрдЧ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:
1 class Car: 2 def __init__(self, color, model, year): 3 self.color = color 4 self.model = model 5 self.year = year
рдкрд╛рдпрдерди рдореЗрдВ, рдЖрдк рдХрднреА рднреА, рдХрд╣реАрдВ рднреА рдПрдХ рд╡рд░реНрдЧ рдШреЛрд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЛ car.py рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд╣реЗрдЬреЗрдВред
рдЗрди рд╡рд░реНрдЧреЛрдВ рдХреЛ рдПрдХ рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рдХрдХреНрд╖рд╛рдУрдВ рдФрд░ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдореБрдЦреНрдп рдШрдЯрдХреЛрдВ рдХрд╛ рдЕрдзреНрдпрдпрди рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВред
рд╡рд╕реНрддреБ рдЧреБрдг
рд╕рднреА рдСрдмреНрдЬреЗрдХреНрдЯ-рдУрд░рд┐рдПрдВрдЯреЗрдб рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ, рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдбреЗрдЯрд╛ рдХрд╣реАрдВ рд╕реНрдЯреЛрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкрд╛рдпрдерди рдФрд░ рдЬрд╛рд╡рд╛ рджреЛрдиреЛрдВ рдореЗрдВ, рдпрд╣ рдбреЗрдЯрд╛ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИ, рдЬреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд╕реНрддреБрдУрдВ рд╕реЗ рдЬреБрдбрд╝реЗ рдЪрд░ рд╣реИрдВред
рдкрд╛рдпрдерди рдФрд░ рдЬрд╛рд╡рд╛ рдХреЗ рдмреАрдЪ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рд╡реЗ рд╡рд░реНрдЧ рдФрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдХреИрд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдпреЗ рднрд╛рд╖рд╛рдПрдВ рдЙрдиреНрд╣реЗрдВ рдХреИрд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддреА рд╣реИрдВред рдЗрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдЕрдВрддрд░ рднрд╛рд╖рд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рд▓рдЧрд╛рдП рдЧрдП рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреЗ рдХрд╛рд░рдг рд╣реЛрддреЗ рд╣реИрдВ, рдЬрдмрдХрд┐ рдЕрдиреНрдп рдЕрдзрд┐рдХ рдкреНрд░рднрд╛рд╡реА рдЕрднреНрдпрд╛рд╕ рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реЛрддреЗ рд╣реИрдВред
рдШреЛрд╖рдгрд╛ рдФрд░ рдкреНрд░рд╛рд░рдВрдн
рдЬрд╛рд╡рд╛ рдореЗрдВ, рд╣рдо рдХреНрд▓рд╛рд╕ рдХреЗ рдЕрдВрджрд░, рд▓реЗрдХрд┐рди рд╕рднреА рддрд░реАрдХреЛрдВ рдХреЗ рдмрд╛рд╣рд░, рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ (рдЙрдирдХреЗ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрддреЗ рд╣реБрдП) рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╣реИрдВред рд╡рд░реНрдЧ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:
1 public class Car { 2 private String color; 3 private String model; 4 private int year;
рдкрд╛рдпрдерди рдореЗрдВ, рд╣рдо рдЗрдирд┐рдЯ () рд╡рд░реНрдЧ рдХреА рд╡рд┐рдзрд┐ рдХреЗ рдЕрдВрджрд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдШреЛрд╖рд┐рдд рдФрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ рдЬрд╛рд╡рд╛ рдореЗрдВ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХрд╛ рдПрдХ рдПрдирд╛рд▓реЙрдЧ рд╣реИ:
1 def __init__(self, color, model, year): 2 self.color = color 3 self.model = model 4 self.year = year
рдЪрд░ рдирд╛рдо рдХреЗ рд╕рд╛рдордиреЗ рдХреАрд╡рд░реНрдб рд╕реНрд╡ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдХреЗ, рд╣рдо рдкрд╛рдпрдерди рдХреЛ рдмрддрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдпреЗ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рд╣реИрдВред рдХрдХреНрд╖рд╛ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдЗрд╕рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдорд┐рд▓рддреА рд╣реИред рдЕрдЬрдЧрд░ рдореЗрдВ рд╕рднреА рдЪрд░ рд╢рд┐рдерд┐рд▓ рдЯрд╛рдЗрдк рдирд╣реАрдВ рд╣реИрдВ, рдФрд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рдХреЛрдИ рдЕрдкрд╡рд╛рдж рдирд╣реАрдВ рд╣реИрдВред
рдЪрд░ рднреА init () рд╡рд┐рдзрд┐ рдХреЗ рдмрд╛рд╣рд░ рдмрдирд╛рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдФрд░ рд╣рд╛рд░реНрдб-рдЯреВ-рдбрд┐рдЯреЗрдХреНрдЯ рдмрдЧ рдХрд╛ рдХрд╛рд░рдг рдмрди рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдХрд╛рд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдПрдХ рдирдпрд╛ рдкрд╣рд┐рдпреЛрдВ рд╡рд┐рд╢реЗрд╖рддрд╛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ:
1 >>> import car 2 >>> my_car = car.Car("yellow", "beetle", 1967) 3 >>> print(f"My car is {my_car.color}") 4 My car is yellow 5 6 >>> my_car.wheels = 5 7 >>> print(f"Wheels: {my_car.wheels}") 8 Wheels: 5
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрджрд┐ рд╣рдо 6 рдкрдВрдХреНрддрд┐ рдореЗрдВ my_car.wheels = 5 рдХреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рднреВрд▓ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ:
1 >>> import car 2 >>> my_car = car.Car("yellow", "beetle", 1967) 3 >>> print(f"My car is {my_car.color}") 4 My car is yellow 5 6 >>> print(f"Wheels: {my_car.wheels}") 7 Traceback (most recent call last): 8 File "<stdin>", line 1, in <module> 9 AttributeError: 'Car' object has no attribute 'wheels'
рдкрд╛рдпрдерди рдореЗрдВ, рдпрджрд┐ рдЖрдк рд╡рд┐рдзрд┐ рдХреЗ рдмрд╛рд╣рд░ рдПрдХ рдЪрд░ рдШреЛрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕реЗ рдПрдХ рд╡рд░реНрдЧ рдЪрд░ рдорд╛рдирд╛ рдЬрд╛рдПрдЧрд╛ред рдЖрдЗрдП рдХрд╛рд░ рдХреА рдХреНрд▓рд╛рд╕ рдмрджрд▓реЗрдВ:
1 class Car: 2 3 wheels = 0 4 5 def __init__(self, color, model, year): 6 self.color = color 7 self.model = model 8 self.year = year
рдЕрдм рдЪрд░ рдкрд╣рд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрджрд▓ рдЬрд╛рдПрдЧрд╛ред рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рд╣рдо рдЗрд╕реЗ рдХреНрд▓рд╛рд╕ рдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХреНрд╕реЗрд╕ рдХрд░рддреЗ рд╣реИрдВ:
1 >>> import car 2 >>> my_car = car.Car("yellow", "beetle", 1967) 3 >>> print(f"My car is {my_car.color}") 4 My car is yellow 5 6 >>> print(f"It has {car.Car.wheels} wheels") 7 It has 0 wheels 8 9 >>> print(f"It has {my_car.wheels} wheels") 10 It has 0 wheels
рдиреЛрдЯ: рдкрд╛рдпрдерди рдореЗрдВ, рдПрдХ рд╡рд░реНрдЧ рдЪрд░ рдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
- рд╡рд░реНрдЧ рдпреБрдХреНрдд рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдо (.py рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рдмрд┐рдирд╛)
- рдмрд┐рдВрджреБ
- рд╡рд░реНрдЧ рдХрд╛ рдирд╛рдо
- рдмрд┐рдВрджреБ
- рдЪрд░ рдирд╛рдо
рдЪреВрдБрдХрд┐ рд╣рдордиреЗ Car.py рдлрд╝рд╛рдЗрд▓ рдореЗрдВ Car рдХреНрд▓рд╛рд╕ рдХреЛ рдмрдЪрд╛рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕ рддрд░рд╣ рд╕реЗ 6th рд▓рд╛рдЗрди рдореЗрдВ рд╡реНрд╣реАрд▓реНрд╕ рдХреНрд▓рд╛рд╕ рд╡реЗрд░рд┐рдПрдмрд▓ рдХреЛ рджреЗрдЦреЗрдВ: car.Car.wheelsред
рдкрд╣рд┐рдпреЛрдВ рдХреЗ рдЪрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рдЗрд╕ рддрдереНрдп рдкрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ my_car.wheels рд╡рд░реНрдЧ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдЪрд░ рдХреЗ рдорд╛рди рдХреЛ рдмрджрд▓рдиреЗ рд╕реЗ рдХрд╛рд░ рдХреЗ рдЪрд░ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдУрд░ рдирд╣реАрдВ рдЬрд╛рддрд╛ рд╣реИред Car.wheels рд╡рд░реНрдЧ:
1 >>> from car import * 2 >>> my_car = car.Car("yellow", "Beetle", "1966") 3 >>> my_other_car = car.Car("red", "corvette", "1999") 4 5 >>> print(f"My car is {my_car.color}") 6 My car is yellow 7 >>> print(f"It has {my_car.wheels} wheels") 8 It has 0 wheels 9 10 >>> print(f"My other car is {my_other_car.color}") 11 My other car is red 12 >>> print(f"It has {my_other_car.wheels} wheels") 13 It has 0 wheels 14 15 >>>
2 рдФрд░ 3 рдХреА рддрд░реНрдЬ рдкрд░, рд╣рдордиреЗ рджреЛ рдХрд╛рд░ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛: my_car рдФрд░ my_other_carред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рджреЛрдиреЛрдВ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдкрд╣рд┐рдпреЛрдВ рдХреА рд╕рдВрдкрддреНрддрд┐ рд╢реВрдиреНрдп рд╣реИред 16 рд╡реАрдВ рдкрдВрдХреНрддрд┐ рдореЗрдВ, рд╣рдо рд╡рд░реНрдЧ рдЪрд░ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ: car.Car.wheels = 4, рджреЛрдиреЛрдВ рд╡рд╕реНрддреБрдУрдВ рдореЗрдВ рдЕрдм 4 рдкрд╣рд┐рдП рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рддрдм рдЬрдм 24 рд╡реАрдВ рдкрдВрдХреНрддрд┐ рдореЗрдВ рд╣рдо рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдмрджрд▓рддреЗ рд╣реИрдВ my_car.wheels = 5, рджреВрд╕рд░реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рд╕рдВрдкрддреНрддрд┐ рдЕрдЫреВрддреА рд░рд╣рддреА рд╣реИред
рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╣рд┐рдпреЛрдВ рдХреА рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд░рддрд┐рдпрд╛рдВ рд╣реИрдВ:
- рд╡рд░реНрдЧ рдЪрд░ рдЬреЛ рд╕рднреА рдХрд╛рд░ рд╡рд╕реНрддреБрдУрдВ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ
- рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╢реНрд░реЗрдгреА рдЙрджрд╛рд╣рд░рдг рдЪрд░ рдЬреЛ рдХреЗрд╡рд▓ my_car рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИред
рдЗрд╕ рд╡рдЬрд╣ рд╕реЗ, рдЖрдк рдЧрд▓рддреА рд╕реЗ рдЧрд▓рдд рдЙрджрд╛рд╣рд░рдг рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рд╕реВрдХреНрд╖реНрдо рдЧрд▓рддреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЬрд╛рд╡рд╛ рдореЗрдВ, рдХреНрд▓рд╛рд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рдмрд░рд╛рдмрд░ рдПрдХ рд╕реНрдерд┐рд░ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ:
public class Car { private String color; private String model; private int year; private static int wheels; public Car(String color, String model, int year) { this.color = color; this.model = model; this.year = year; } public static int getWheels() { return wheels; } public static void setWheels(int count) { wheels = count; } }
рдЖрдорддреМрд░ рдкрд░ рд╣рдо рдЬрд╛рд╡рд╛ рдореЗрдВ рд╕реНрдерд┐рд░ рдЪрд░ рдХреЛ рд╡рд░реНрдЧ рдирд╛рдо рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд░рддреЗ рд╣реИрдВред рдЖрдк рдЙрдиреНрд╣реЗрдВ рдХрдХреНрд╖рд╛ рдХреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдкрд╛рдпрдерди рдореЗрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реЛрдЧрд╛ред
рд╣рдорд╛рд░рд╛ рдЬрд╛рд╡рд╛ рд╡рд░реНрдЧ рд▓рдВрдмрд╛ рд╣реЛрдиреЗ рд▓рдЧрд╛ рд╣реИред рдЬрд╛рд╡рд╛ рдХреЗ рдХрд╛рд░рдгреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ "рдХреНрд░рд┐рдпрд╛" рдкрд╛рдпрдерди рдХреЗ рд▓рд┐рдП рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдФрд░ рдирд┐рдЬреА рддрд░реАрдХреЛрдВ рдФрд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреА рдзрд╛рд░рдгрд╛ рд╣реИред
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдФрд░ рдирд┐рдЬреА
рдЬрд╛рд╡рд╛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдФрд░ рдирд┐рдЬреА рдбреЗрдЯрд╛ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХрд░рдХреЗ рд╡рд┐рдзрд┐рдпреЛрдВ рдФрд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рддрдХ рдкрд╣реБрдВрдЪ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред
рдЬрд╛рд╡рд╛ рдореЗрдВ, рдпрд╣ рдЙрдореНрдореАрдж рдХреА рдЬрд╛рддреА рд╣реИ рдХрд┐ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдирд┐рдЬреА рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ (рдпрд╛ рд╕рдВрд░рдХреНрд╖рд┐рдд, рдпрджрд┐ рд╡рд░реНрдЧ рдХреЗ рд╡рдВрд╢рдЬреЛрдВ рдХреЛ рдЙрди рддрдХ рдкрд╣реБрдВрдЪ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ)ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдо рдмрд╛рд╣рд░ рд╕реЗ рдЙрди рддрдХ рдкрд╣реБрдВрдЪ рдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдирд┐рдЬреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рддрд░реАрдХреЛрдВ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╣реИрдВ (рдЗрд╕ рдкрд░ рдмрд╛рдж рдореЗрдВ)ред
рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдЬрд╛рд╡рд╛ рдХреЛрдб рдореЗрдВ, рд░рдВрдЧ рдЪрд░ рдХреЛ рдирд┐рдЬреА рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕рд▓рд┐рдП, рдиреАрдЪреЗ рджрд┐рдпрд╛ рдЧрдпрд╛ рдХреЛрдб рд╕рдВрдХрд▓рд┐рдд рдирд╣реАрдВ рд╣реЛрдЧрд╛:
Car myCar = new Car("blue", "Ford", 1972);
рдпрджрд┐ рдЖрдк рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рддрдХ рдкрд╣реБрдВрдЪ рдХреЗ рд╕реНрддрд░ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЗрд╕реЗ рдкреИрдХреЗрдЬ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬреЛ рдкреИрдХреЗрдЬ рдХреЗ рднреАрддрд░ рдХрдХреНрд╖рд╛рдУрдВ рддрдХ рдкрд╣реБрдВрдЪ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рд╣рдо рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рдХреЛ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЬрд╛рд╡рд╛ рдХреЛ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдЕрдиреБрд╢рдВрд╕рд╛ рдХреА рдЬрд╛рддреА рд╣реИ рдХрд┐ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдирд┐рдЬреА рдШреЛрд╖рд┐рдд рдХрд░реЗрдВ, рдФрд░ рдлрд┐рд░ getColor (рдФрд░ getModel) рдЬреИрд╕реА рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рджрд┐рдП рдЧрдП рдХреЛрдб рдореЗрдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдкрд╛рдпрдерди рдореЗрдВ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдФрд░ рдирд┐рдЬреА рдбреЗрдЯрд╛ рдХреА рдзрд╛рд░рдгрд╛ рдХрд╛ рдЕрднрд╛рд╡ рд╣реИред рдЕрдЬрдЧрд░ рдореЗрдВ, рд╕рдм рдХреБрдЫ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╣реИред рдпрд╣ рдЕрдЬрдЧрд░ рдХреЛрдб рдзрдорд╛рдХреЗ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдЧрд╛:
>>> my_car = car.Car("blue", "Ford", 1972) >>>
рдкрд╛рдпрдерди рдореЗрдВ рдирд┐рдЬреА рдЪрд░ рдХреЗ рдмрдЬрд╛рдп, рдЧреИрд░-рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ ( рдЧреИрд░-рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ ) рд╡рд░реНрдЧ рдЙрджрд╛рд╣рд░рдг рдЪрд░ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рд╣реИред рд╕рднреА рдЪрд░ рдЬрд┐рдирдХреЗ рдирд╛рдо рдПрдХрд▓ рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреЗ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдЧреИрд░-рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдирд╛рдордХрд░рдг рд╕рдореНрдореЗрд▓рди рд╣рдореЗрдВ рдЪрд░ рдХреЛ рд╕реАрдзреЗ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рд╕реЗ рдирд╣реАрдВ рд░реЛрдХрддрд╛ рд╣реИред
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрдВрдХреНрддрд┐ рдХреЛ рд╣рдорд╛рд░реЗ рдкрд╛рдпрдерди рдХреНрд▓рд╛рд╕ рдХрд╛рд░ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:
class Car: wheels = 0 def __init__(self, color, model, year): self.color = color self.model = model self.year = year self._cupholders = 6
рд╣рдо рд╕реАрдзреЗ _cupholders рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
>>> import car >>> my_car = car.Car("yellow", "Beetle", "1969") >>> print(f"It was built in {my_car.year}") It was built in 1969 >>> my_car.year = 1966 >>> print(f"It was built in {my_car.year}") It was built in 1966 >>> print(f"It has {my_car._cupholders} cupholders.") It has 6 cupholders.
рдЕрдЬрдЧрд░ рдЖрдкрдХреЛ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХреБрдЫ рд╡рд┐рдХрд╛рд╕ рд╡рд╛рддрд╛рд╡рд░рдг рдЬреИрд╕реЗ рд╡реАрдПрд╕ рдХреЛрдб рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рджреЗрдЧрд╛:

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкрд╛рдпрдерди рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рдЫрд┐рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЪрд░ рдирд╛рдо рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдПрдХ рдбрдмрд▓ рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЬрдм рдкрд╛рдпрдерди рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдЪрд░ рдХреЛ рджреЗрдЦрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╕реАрдзреЗ рдкрд╣реБрдВрдЪ рдХреЛ рдореБрд╢реНрдХрд┐рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдирд╛рдо рдХреЛ рдмрджрд▓ рджреЗрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рддрдВрддреНрд░ рдЕрднреА рднреА рд╣рдореЗрдВ рдЗрд╕реЗ рдореЛрдбрд╝рдиреЗ рд╕реЗ рдирд╣реАрдВ рд░реЛрдХрддрд╛ рд╣реИред рд╣рдо рдЗрд╕реЗ рдирд┐рдореНрди рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ:
class Car: wheels = 0 def __init__(self, color, model, year): self.color = color self.model = model self.year = year self.__cupholders = 6
рдЕрдм рдпрджрд┐ рд╣рдо __cupenders рдЪрд░ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ:
>>> import car >>> my_car = car.Car("yellow", "Beetle", "1969") >>> print(f"It was built in {my_car.year}") It was built in 1969 >>> my_car.year = 1966 >>> print(f"It was built in {my_car.year}") It was built in 1966 >>> print(f"It has {my_car.__cupholders} cupholders.") Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: 'Car' object has no attribute '__cupholders'
рддреЛ __cupenders рд╡рд┐рд╢реЗрд╖рддрд╛ рдореМрдЬреВрдж рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИ?
рдпреЗ рд░рд╣реА рдмрд╛рддред рдЬрдм рдкрд╛рдпрдерди рд╢реБрд░реБрдЖрдд рдореЗрдВ рдПрдХ рдбрдмрд▓ рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рд╡рд┐рд╢реЗрд╖рддрд╛ рджреЗрдЦрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╢реБрд░реБрдЖрдд рдореЗрдВ рдПрдХ рд░реЗрдЦрд╛рдВрдХрд┐рдд рд╡рд░реНрдЧ рдирд╛рдо рдЬреЛрдбрд╝рдХрд░ рдЗрд╕реЗ рдмрджрд▓ рджреЗрддрд╛ рд╣реИред рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рд╕реАрдзреЗ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдирд╛рдо рднреА рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛:
>>> print(f"It has {my_car._Car__cupholders} cupholders") It has 6 cupholders
рдЕрдм рд╕рд╡рд╛рд▓ рдЙрдарддрд╛ рд╣реИ: рдпрджрд┐ рдЬрд╛рд╡рд╛ рд╡рд░реНрдЧ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рдирд┐рдЬреА рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдкрд╛рдпрдерди рд╡рд░реНрдЧ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рдирд╛рдо рдореЗрдВ рдбрдмрд▓ рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рд╕реЗ рдкрд╣рд▓реЗ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрд╕ рдбреЗрдЯрд╛ рдХреЛ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ?
рдЕрднрд┐рдЧрдо рдирд┐рдпрдВрддреНрд░рдг
рдЬрд╛рд╡рд╛ рдореЗрдВ, рд╣рдо рдмрд╕рдиреЗ рд╡рд╛рд▓реЛрдВ рдФрд░ рдЧреЗрдЯрд░реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд┐рдЬреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЕрдкрдиреА рдорд╢реАрди рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдЬрд╛рд╡рд╛ рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдХреЛрдб рдЬреЛрдбрд╝реЗрдВ:
public String getColor() { return color; } public void setColor(String color) { this.color = color; }
рдЪреВрдВрдХрд┐ getColor () рдФрд░ setColor () рд╡рд┐рдзрд┐рдпрд╛рдВ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╣реИрдВ, рдХреЛрдИ рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЙрдиреНрд╣реЗрдВ рдХреЙрд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдорд╢реАрди рдХреЗ рд░рдВрдЧ рдХреЛ рдкреНрд░рд╛рдкреНрдд / рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИред рдирд┐рдЬреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ, рдЬрд┐рдирдХреЗ рд▓рд┐рдП рд╣рдо рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЧреЗрдЯрд░реНрд╕ рдФрд░ рдмрд╕рдиреЗ рд╡рд╛рд▓реЛрдВ рддрдХ рдкрд╣реБрдВрдЪрддреЗ рд╣реИрдВ, рдкрд╛рдпрдерди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЬрд╛рд╡рд╛ рдХреА рдЕрдзрд┐рдХ "рд╡рд░реНрдмреЛрд╕рд┐рдЯреА" рдХреЗ рдХрд╛рд░рдгреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред
рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдкрд╛рдпрдерди рдореЗрдВ рд╣рдо рд╕реАрдзреЗ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВред рдЪреВрдВрдХрд┐ рд╕рдм рдХреБрдЫ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╣реИ, рд╣рдо рдХрд┐рд╕реА рднреА рд╕рдордп, рдХрднреА рднреА, рдХрд╣реАрдВ рднреА рдкрд╣реБрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо рд╕реАрдзреЗ рдЙрдирдХреЗ рдирд╛рдо рд╕реЗ рдХреЙрд▓ рдХрд░рдХреЗ рд╡рд┐рд╢реЗрд╖рддрд╛ рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдФрд░ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдкрд╛рдпрдерди рдореЗрдВ, рд╣рдо рдЙрди рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рднреА рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдЬрд╛рд╡рд╛ рдореЗрдВ рдЕрдХрд▓реНрдкрдиреАрдп рд╣реИ:
>>> my_car = Car("yellow", "beetle", 1969) >>> print(f"My car was built in {my_car.year}") My car was built in 1969 >>> my_car.year = 1966 >>> print(f"It was built in {my_car.year}") It was built in 1966 >>> del my_car.year >>> print(f"It was built in {my_car.year}") Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: 'Car' object has no attribute 'year'
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рднреА рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рддрдХ рдкрд╣реБрдБрдЪ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкрд╛рдпрдерди рдЧреБрдг рд╣рдорд╛рд░реА рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд▓рд┐рдП рдЖрддреЗ рд╣реИрдВред
рдкрд╛рдпрдерди рдореЗрдВ, рдЧреБрдг рд╕рдЬреНрдЬрд╛рдХрд╛рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд░реНрдЧ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред рдЧреБрдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рдЬрд╛рд╡рд╛ рдореЗрдВ рдЧреЗрдЯрд░реНрд╕ рдФрд░ рд╕реЗрдЯрд░ рдЬреИрд╕реЗ рдкрд╛рдпрдерди рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рдХрд╛рд░реНрдпреЛрдВ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╣реИрдВ (рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рд╣рдЯрд╛рддреЗ рд╣реБрдП рдПрдХ рдмреЛрдирд╕ рд╣реИ)ред
рдЧреБрдгреЛрдВ рдХрд╛ рд╕рдВрдЪрд╛рд▓рди рдХрд╛рд░ рд╡рд░реНрдЧ рдХреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
1 class Car: 2 def __init__(self, color, model, year): 3 self.color = color 4 self.model = model 5 self.year = year 6 self._voltage = 12 7 8 @property 9 def voltage(self): 10 return self._voltage 11 12 @voltage.setter 13 def voltage(self, volts): 14 print("Warning: this can cause problems!") 15 self._voltage = volts 16 17 @voltage.deleter 18 def voltage(self): 19 print("Warning: the radio will stop working!") 20 del self._voltage
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдо рдЗрд▓реЗрдХреНрдЯреНрд░рд┐рдХ рдХрд╛рд░реЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░ рд╡рд░реНрдЧ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред рд▓рд╛рдЗрди 6 рдореЗрдВ рдмреИрдЯрд░реА рд╡реЛрд▓реНрдЯреЗрдЬ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП _voltage рд╡рд┐рд╢реЗрд╖рддрд╛ рдШреЛрд╖рд┐рдд рдХреА рдЧрдИ рд╣реИред
рдирд┐рдпрдВрддреНрд░рд┐рдд рдкрд╣реБрдВрдЪ рдХреЗ рд▓рд┐рдП 9 рдФрд░ 10 рдХреА рдкрдВрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ, рд╣рдо рд╡реЛрд▓реНрдЯреЗрдЬ () рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдирд┐рдЬреА рдЪрд░ рдХреЗ рдореВрд▓реНрдп рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рддреЗ рд╣реИрдВред @Property рдбреЗрдХреЛрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд╣рдо рдЗрд╕реЗ рдПрдХ рдЧрдЯрд░ рдореЗрдВ рдмрджрд▓ рджреЗрддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рдЕрдм рдХреЛрдИ рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдХреНрд╕реЗрд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
13-15 рдХреА рдкрдВрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ, рд╣рдо рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╡реЛрд▓реНрдЯреЗрдЬ () рднреА рдХрд╣рддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╣рдо рдЗрд╕реЗ рдЕрд▓рдЧ рддрд░рд╣ рд╕реЗ рд╕рдЬрд╛рддреЗ рд╣реИрдВ: рд╡реЛрд▓реНрдЯреЗрдЬ редрд╕реЗрдЯреНрдЯрд░ред рдЕрдВрдд рдореЗрдВ, 18-20 рдХреА рдкрдВрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ, рд╣рдо рд╡реЛрд▓реНрдЯреЗрдЬ () рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╡реЛрд▓реНрдЯреЗрдЬ .deleter рд╕реЗ рд╕рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ _voltage рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рд╕рдЬрд╛рдП рдЧрдП рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдПрдХ рд╣реА рдирд╛рдо рд╣реИ, рдпрд╣ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рдПрдХ рд╣реА рд╡рд┐рд╢реЗрд╖рддрд╛ рддрдХ рдкрд╣реБрдВрдЪ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдпреЗ рдлрд╝рдВрдХреНрд╢рди рдирд╛рдо рдЙрдирдХреЗ рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдирд╛рдо рднреА рдмрди рдЬрд╛рддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:
1 >>> from car import * 2 >>> my_car = Car("yellow", "beetle", 1969) 3 4 >>> print(f"My car uses {my_car.voltage} volts") 5 My car uses 12 volts 6 7 >>> my_car.voltage = 6 8 Warning: this can cause problems! 9 10 >>> print(f"My car now uses {my_car.voltage} volts") 11 My car now uses 6 volts 12 13 >>> del my_car.voltage 14 Warning: the radio will stop working!
рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╣рдо рд╡реЛрд▓реНрдЯреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, _ рд╡реЛрд▓реНрдЯреЗрдЬ рдХрд╛ рдирд╣реАрдВред рддреЛ рд╣рдо рдкрд╛рдпрдерди рдХреЛ рдЙрди рдЧреБрдгреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдпрд╣ рдХреЗрд╡рд▓ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ:
- рдЬрдм рд╣рдо 4th рд▓рд╛рдЗрди рдореЗрдВ value my_car.voltage рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ Python @proproty рд╕реЗ рд╕рдЬрд╛рдП рдЧрдП рд╡реЛрд▓реНрдЯреЗрдЬ () рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред
- рдЬрдм рд╣рдо 7 рдкрдВрдХреНрддрд┐ рдореЗрдВ my_car.voltage рдорд╛рди рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдкрд╛рдпрдерди рд╡реЛрд▓реНрдЯреЗрдЬ () рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╡реЛрд▓реНрдЯреЗрдЬрд╕реЗрдЯ рдХреЗ рд╕рд╛рде рд╕рдЬрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
- рдЬрдм рд╣рдо my_car.voltage рдХреЛ рдкрдВрдХреНрддрд┐ 13 рдореЗрдВ рд╣рдЯрд╛рддреЗ рд╣реИрдВ, рддреЛ Python рд╡реЛрд▓реНрдЯреЗрдЬ () рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ .deleter рд╕реЗ рд╕рдЬрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЙрдкрд░реЛрдХреНрдд рд╕рдЬреНрдЬрд╛рдХрд╛рд░ рд╣рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рддрдХ рдкрд╣реБрдВрдЪ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред рдЖрдк рдЗрд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рдХреЗрд╡рд▓ рд╕рдЬрд╛рдпрд╛ рд╣реБрдЖ @ .terter рдФрд░ @ .delele рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╣рдЯрд╛рдХрд░ рдХреЗрд╡рд▓ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдкрддреНрддрд┐ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред
рд╕реНрд╡ рдФрд░ рдпрд╣
рдЬрд╛рд╡рд╛ рдореЗрдВ, рдПрдХ рд╡рд░реНрдЧ рдЗрд╕ рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдЦреБрдж рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ:
public void setColor(String color) { this.color = color; }
рдпрд╣ рдЬрд╛рд╡рд╛ рдХреЛрдб рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдЗрд╕реЗ рд▓рд┐рдЦрдирд╛ рднреА рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ, рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдЬрдм рдЪрд░реЛрдВ рдХреЗ рдирд╛рдо рдореЗрд▓ рдЦрд╛рддреЗ рд╣реИрдВред
рд╕реЗрдЯрд░ рдХреЛ рдЗрд╕ рддрд░рд╣ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
public void setColor(String newColor) { color = newColor; }
рдЪреВрдВрдХрд┐ рдХрд╛рд░ рд╡рд░реНрдЧ рдореЗрдВ рд░рдВрдЧ рдирд╛рдордХ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реЛрддреА рд╣реИ рдФрд░ рд╕реНрдХреЛрдк рдореЗрдВ рдПрдХ рд╣реА рдирд╛рдо рдХреЗ рд╕рд╛рде рдЕрдзрд┐рдХ рдЪрд░ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЗрд╕ рдирд╛рдо рдХрд╛ рд▓рд┐рдВрдХ рдЪрд╛рд▓реВ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдордиреЗ рдЗрд╕ рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдкрд╣рд▓реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдПрдХ рд╣реА рд░рдВрдЧ рдХреЗ рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдФрд░ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдерд╛ред
рдкрд╛рдпрдерди рдореЗрдВ, рд╕реНрд╡рдпрдВ рдХреАрд╡рд░реНрдб рдПрдХ рд╕рдорд╛рди рдЙрджреНрджреЗрд╢реНрдп рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ: рд╡рд┐рд╢реЗрд╖рддрд╛ рд╕рджрд╕реНрдпреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ, рд▓реЗрдХрд┐рди рдЬрд╛рд╡рд╛ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ :
class Car: def __init__(self, color, model, year): self.color = color self.model = model self.year = year self._voltage = 12 @property def voltage(self): return self._voltage
рдкрд╛рдпрдерди рдХреЛ рдЕрдирд┐рд╡рд╛рд░реНрдп рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдпрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рд╕реНрд╡рдпрдВ рдпрд╛ рддреЛ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдмрдирд╛рддрд╛ рд╣реИ рдпрд╛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рд╣рдо рдЗрд╕реЗ рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВ, рддреЛ рдкрд╛рдпрдерди рдХреЗрд╡рд▓ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рдмрдЬрд╛рдп рдПрдХ рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдмрдирд╛рдПрдЧрд╛ред
рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рд╣рдо рд╕реНрд╡рдпрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рдкрд╛рдпрдерди рдФрд░ рдЬрд╛рд╡рд╛ рдореЗрдВ рдЕрдВрддрд░ рджреЛ рднрд╛рд╖рд╛рдУрдВ рдХреЗ рдмреАрдЪ рдореБрдЦреНрдп рдЕрдВрддрд░ рдФрд░ рд╡реЗ рдЪрд░ рдФрд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдирд╛рдо рджреЗрдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдХрд╛рд░рдг рд╣реИред
рддрд░реАрдХреЗ рдФрд░ рдХрд╛рд░реНрдп
рд╡рд┐рдЪрд╛рд░рд╛рдзреАрди рднрд╛рд╖рд╛рдУрдВ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдкрд╛рдпрдерди рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЬрд╛рд╡рд╛ рдореЗрдВ рд╡реЗ рдирд╣реАрдВ рд╣реИрдВред
рдкрд╛рдпрдерди рдореЗрдВ, рдирд┐рдореНрди рдХреЛрдб рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд┐рдирд╛ рдХрд╛рдо рдХрд░реЗрдЧрд╛ (рдФрд░ рд╣рд░ рдЬрдЧрд╣ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ):
>>> def say_hi(): ... print("Hi!") ... >>> say_hi() Hi!
рд╣рдо рджреГрд╢реНрдпрддрд╛ рдореЗрдВ рдХрд╣реАрдВ рд╕реЗ say_hi () рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд╕реНрд╡рдпрдВ рдХрд╛ рд╕рдВрджрд░реНрдн рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИ, рди рдХрд┐ рдХреНрд▓рд╛рд╕ рдлрд╝рдВрдХреНрд╢рдиред рд╡рд╣ рдХрд┐рд╕реА рднреА рд╡рд░реНрдЧ рдХреЗ рдХрд┐рд╕реА рднреА рдбреЗрдЯрд╛ рдХреЛ рдмрджрд▓рдиреЗ рдпрд╛ рд╕рд╣реЗрдЬрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рд╡рд╣ рд╕реНрдерд╛рдиреАрдп рдФрд░ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЬрд╛рд╡рд╛ рдореЗрдВ рд╣рдо рдЬреЛ рднреА рд▓рд╛рдЗрди рд▓рд┐рдЦрддреЗ рд╣реИрдВ рд╡рд╣ рдПрдХ рд╡рд░реНрдЧ рдХреА рд╣реЛрддреА рд╣реИред рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХрдХреНрд╖рд╛ рдХреЗ рдмрд╛рд╣рд░ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ, рдФрд░ рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд╕рднреА рдЬрд╛рд╡рд╛ рдлрд╝рдВрдХреНрд╢рди рд╡рд┐рдзрд┐ рд╣реИрдВред рдЬрд╛рд╡рд╛ рдореЗрдВ, рд╢реБрджреНрдз рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдирд┐рдХрдЯрддрдо рдЪреАрдЬ рдПрдХ рд╕реНрдерд┐рд░ рд╡рд┐рдзрд┐ рд╣реИ:
public class Utils { static void SayHi() { System.out.println("Hi!"); } }
Utilsред SayHi () рдХреЛ рдпреВрдЯрд┐рд▓реНрд╕ рд╡рд░реНрдЧ рдХреЗ рдкрд╣рд▓реЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рдмрд┐рдирд╛ рдХрд╣реАрдВ рд╕реЗ рднреА рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рд╣рдо SayHi () рдХреЛ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдП рдмрд┐рдирд╛ рдХрд╣рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд▓рд┐рдВрдХ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рдЕрднреА рднреА рдЗрд╕ рдЕрд░реНрде рдореЗрдВ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдирд╣реАрдВ рд╣реИ рдХрд┐ say_hi () рдкрд╛рдпрдерди рдореЗрдВ рд╣реИред
рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдо рдФрд░ рдмрд╣реБрд░реВрдкрддрд╛
рд╡рд┐рд░рд╛рд╕рдд рдФрд░ рдмрд╣реБрд░реВрдкрддрд╛ OOP рдореЗрдВ рджреЛ рдореМрд▓рд┐рдХ рдЕрд╡рдзрд╛рд░рдгрд╛рдПрдВ рд╣реИрдВред рдкрд╣рд▓реЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ (рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ) рдЕрдиреНрдп рд╡рд╕реНрддреБрдУрдВ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдФрд░ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рд╕рд╛рдорд╛рдиреНрдп рд╡рд╕реНрддреБрдУрдВ рд╕реЗ рдЕрдзрд┐рдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд▓реЛрдЧреЛрдВ рддрдХ рдкрджрд╛рдиреБрдХреНрд░рдо рдмрдирд╛рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрд╛рд░ рд╡рд░реНрдЧ рдФрд░ рдирд╛рд╡ рд╡рд░реНрдЧ рджреЛрдиреЛрдВ рд╡рд╛рд╣рди рд╡рд░реНрдЧ рдХреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рдХрд╛рд░ рд╣реИрдВред рджреЛрдиреЛрдВ рд╡рд╕реНрддреБрдУрдВ рдореЗрдВ рдПрдХ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдпрд╛ рдХрдИ рдореВрд▓ рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЙрдиреНрд╣реЗрдВ рдмрд╛рд▓ рд╡рд╕реНрддреБ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
рдмрд╣реБрд░реВрдкрддрд╛, рдмрджрд▓реЗ рдореЗрдВ, рдПрдХ рд╣реА рдлрд╝рдВрдХреНрд╢рди рдпрд╛ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИред
рдЗрди рджреЛрдиреЛрдВ рдУрдУрдкреА рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХреЛ рдЬрд╛рд╡рд╛ рдФрд░ рдкрд╛рдпрдерди рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рд╡рд┐рд░рд╛рд╕рдд
рдкрд╛рдпрдерди рдорд▓реНрдЯреАрдкрд▓ рдЗрдирд╣реЗрд░рд┐рдЯреЗрдВрд╕ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдпрд╛рдиреА рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдЕрднрд┐рднрд╛рд╡рдХреЛрдВ рд╕реЗ рдПрдХ рд╡рд░реНрдЧ рдмрдирд╛рдирд╛ред
рдЗрд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдХрд╛рд░ рд╡рд░реНрдЧ рдХреЛ рджреЛ рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддреЗ рд╣реИрдВ: рдПрдХ рд╡рд╛рд╣рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдФрд░ рджреВрд╕рд░рд╛ рдмрд┐рдЬрд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП:
class Vehicle: def __init__(self, color, model): self.color = color self.model = model class Device: def __init__(self): self._voltage = 12 class Car(Vehicle, Device): def __init__(self, color, model, year): Vehicle.__init__(self, color, model) Device.__init__(self) self.year = year @property def voltage(self): return self._voltage @voltage.setter def voltage(self, volts): print("Warning: this can cause problems!") self._voltage = volts @voltage.deleter def voltage(self): print("Warning: the radio will stop working!") del self._voltage
рд╡рд╛рд╣рди рд╡рд░реНрдЧ рд░рдВрдЧ рдФрд░ рдореЙрдбрд▓ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред рдбрд┐рд╡рд╛рдЗрд╕ рд╡рд░реНрдЧ рдореЗрдВ _voltage рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИред рдХрд╛рд░ рд╡рд░реНрдЧ рдЗрди рджреЛ рд╡рд░реНрдЧреЛрдВ рд╕реЗ рдирд┐рдХрд▓рд╛ рд╣реИ, рдФрд░ рд░рдВрдЧ, рдореЙрдбрд▓ рдФрд░ _ рд╡реЛрд▓реНрдЯ рд╡реЛрд▓реНрдЯреЗрдЬ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рдЕрдм рдирдИ рдХрдХреНрд╖рд╛ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИрдВред
рдХрд╛рд░ рд╡рд░реНрдЧ рдХреА init () рд╡рд┐рдзрд┐ рджреЛрдиреЛрдВ рдореВрд▓ рд╡рд░реНрдЧреЛрдВ рдХреЗ init () рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рддреА рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ рдХрд┐ рд╕рднреА рдбреЗрдЯрд╛ рдХреЛ рдареАрдХ рд╕реЗ рдЖрд░рдВрдн рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЙрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рдХрд╛рд░ рд╡рд░реНрдЧ рдореЗрдВ рдХреЛрдИ рднреА рд╡рд╛рдВрдЫрд┐рдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдо рд╡рд░реНрд╖ рд╡рд┐рд╢реЗрд╖рддрд╛ рдЬреЛрдбрд╝реЗрдВрдЧреЗ, рд╕рд╛рде рд╣реА _voltage рдХреЗ рд▓рд┐рдП рдЧреЗрдЯреНрдЯрд░ рдФрд░ рд╕реЗрдЯрд░ рднреАред
рдирдП рдХрд╛рд░ рд╡рд░реНрдЧ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╕рдорд╛рди рд░рд╣рддреА рд╣реИред рд╣рдо рдХреНрд▓рд╛рд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ рдкрд╣рд▓реЗ рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг рджрд┐рдП рдереЗ:
>>> from car import * >>> my_car = Car("yellow", "beetle", 1969) >>> print(f"My car is {my_car.color}") My car is yellow >>> print(f"My car uses {my_car.voltage} volts") My car uses 12 volts >>> my_car.voltage = 6 Warning: this can cause problems! >>> print(f"My car now uses {my_car.voltage} volts") My car now uses 6 volts
рдЬрд╛рд╡рд╛ рднрд╛рд╖рд╛, рдмрджрд▓реЗ рдореЗрдВ, рдХреЗрд╡рд▓ рдПрдХрд▓ рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдо рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреА рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЬрд╛рд╡рд╛ рдореЗрдВ рдХрдХреНрд╖рд╛рдПрдВ рдХреЗрд╡рд▓ рдПрдХ рдореВрд▓ рд╡рд░реНрдЧ рд╕реЗ рдбреЗрдЯрд╛ рдФрд░ рд╡реНрдпрд╡рд╣рд╛рд░ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреА рд╣реИрдВред рд▓реЗрдХрд┐рди рдЬрд╛рд╡рд╛ рдореЗрдВ, рдХрдИ рдЗрдВрдЯрд░рдлреЗрд╕ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рд╕рдВрднрд╡ рд╣реИред рдЗрдВрдЯрд░рдлреЗрд╕ рд╕рдВрдмрдВрдзрд┐рдд рддрд░реАрдХреЛрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдмрд╛рд▓ рд╡рд░реНрдЧ рдПрдХ рд╕рдорд╛рди рддрд░реАрдХреЗ рд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЗрд╕реЗ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдХрд╛рд░ рдЬрд╛рд╡рд╛ рд╡рд░реНрдЧ рдХреЛ рдЙрд╕рдХреЗ рдореВрд▓ рд╡рд░реНрдЧ рдФрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддреЗ рд╣реИрдВ:
public class Vehicle { private String color; private String model; public Vehicle(String color, String model) { this.color = color; this.model = model; } public String getColor() { return color; } public String getModel() { return model; } } public interface Device { int getVoltage(); } public class Car extends Vehicle implements Device { private int voltage; private int year; public Car(String color, String model, int year) { super(color, model); this.year = year; this.voltage = 12; } @Override public int getVoltage() { return voltage; } public int getYear() { return year; } }
рдпрд╣ рдордд рднреВрд▓реЛ рдХрд┐ рдЬрд╛рд╡рд╛ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рд╡рд░реНрдЧ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдЕрдкрдиреА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЙрдкрд░реЛрдХреНрдд рдкрд╛рдпрдерди рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдо рд╡рд╛рд╣рдиреЛрдВ рдореЗрдВ рдирд┐рд╣рд┐рдд рд╕рд╛рдорд╛рдиреНрдп рдбреЗрдЯрд╛ рдФрд░ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рд╡рд╛рд╣рди рд╡рд░реНрдЧ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдбрд┐рд╡рд╛рдЗрд╕ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд╡реЛрд▓реНрдЯреЗрдЬ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдзрд┐ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред
рдХрд╛рд░ рдХреНрд▓рд╛рд╕ рд╡рд╛рд╣рди рдХреНрд▓рд╛рд╕ рд╕реЗ рдирд┐рдХрд╛рд▓реЗ рдЧрдП рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдбрд┐рд╡рд╛рдЗрд╕ рдХреАрд╡рд░реНрдб рдХреЛ рдЗрдореНрдкреНрд▓реАрдореЗрдВрдЯ рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдХреНрд▓рд╛рд╕ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ, рд╣рдо рд╕реБрдкрд░ () рдХреЗ рд╕рд╛рде рдкреИрд░реЗрдВрдЯ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдмреБрд▓рд╛рддреЗ рд╣реИрдВред рдЪреВрдВрдХрд┐ рдХреЗрд╡рд▓ рдПрдХ рдореВрд▓ рд╡рд░реНрдЧ рд╣реИ, рд╣рдо рд╡рд╛рд╣рди рд╡рд░реНрдЧ рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛ рдХреЛ рджреЗрдЦреЗрдВред рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдУрд╡рд░рд░рд╛рдЗрдб рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ getVoltage () рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВред
рдбрд┐рд╡рд╛рдЗрд╕ рд╕реЗ рдХреЛрдб рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЬреИрд╕рд╛ рдХрд┐ рдкрд╛рдпрдерди рдХрд░рддрд╛ рд╣реИ, рдЬрд╛рд╡рд╛ рдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рд╣рд░ рд╡рд░реНрдЧ рдореЗрдВ рд╕рдорд╛рди рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд▓рд╛рдЧреВ рдХрд░реЗрдВ рдЬреЛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗрд╡рд▓ рддрд░реАрдХреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ - рд╡реЗ рд╡рд░реНрдЧ рдЙрджрд╛рд╣рд░рдг рдбреЗрдЯрд╛ рдпрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рд╡рд░рдг рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
Java? .
Java . , Java- , , . , .
Java- charge(), Device. , Device, charge().
Rhino.java:
public class Rhino { }
Main.java charge() , Car Rhino.
public class Main{ public static void charge(Device device) { device.getVoltage(); } public static void main(String[] args) throws Exception { Car car = new Car("yellow", "beetle", 1969); Rhino rhino = new Rhino(); charge(car); charge(rhino); } }
, : Information:2019-02-02 15:20 - Compilation completed with 1 error and 0 warnings in 4 s 395 ms Main.java Error:(43, 11) java: incompatible types: Rhino cannot be converted to Device
Rhino Device, charge().
( тАФ strict variable typing, , Python ) , Java, Python , : ┬л , ┬╗ ( : " , , , , " тАУ . ). , Python .
Python:
>>> def charge(device): ... if hasattr(device, '_voltage'): ... print(f"Charging a {device._voltage} volt device") ... else: ... print(f"I can't charge a {device.__class__.__name__}") ... >>> class Phone(Device): ... pass ... >>> class Rhino: ... pass ... >>> my_car = Car("yellow", "Beetle", "1966") >>> my_phone = Phone() >>> my_rhino = Rhino() >>> charge(my_car) Charging a 12 volt device >>> charge(my_phone) Charging a 12 volt device >>> charge(my_rhino) I can't charge a Rhino
charge() _voltage. Device , - (Car Phone) , , , . , Device ( Rhino), , , , (rhino) .
Java Object, . , . Object :
class Object { boolean equals(Object obj) { ... } int hashCode() { ... } String toString() { ... } }
equals() , , hashCode() , . Java . , , , .
toString() . . , , , , System.out.println():
Car car = new Car("yellow", "Beetle", 1969); System.out.println(car);
car:
Car@61bbe9ba
, ? , toString(). Car:
public String toString() { return "Car: " + getColor() + " : " + getModel() + " : " + getYear(); }
, , :
Car: yellow : Beetle : 1969
Python (dunder тАФ double underscore). Python- , , , .
Python : repr () str (). repr (), str () . hashcode() toString() Java.
Java, Python :
>>> my_car = Car("yellow", "Beetle", "1966") >>> print(repr(my_car)) <car.Car object at 0x7fe4ca154f98> >>> print(str(my_car)) <car.Car object at 0x7fe4ca154f98>
, str () Python- Car:
def __str__(self): return f'Car {self.color} : {self.model} : {self.year}'
:
>>> my_car = Car("yellow", "Beetle", "1966") >>> print(repr(my_car)) <car.Car object at 0x7f09e9a7b630> >>> print(str(my_car)) Car yellow : Beetle : 1966
. repr (), .
Python , , , .
Python . Python , Java .
Python- Car :
class Car: def __init__(self, color, model, year): self.color = color self.model = model self.year = year def __str__(self): return f'Car {self.color} : {self.model} : {self.year}' def __eq__(self, other): return self.year == other.year def __lt__(self, other): return self.year < other.year def __add__(self, other): return Car(self.color + other.color, self.model + other.model, int(self.year) + int(other.year))
, :
Python , , , .
Car:
>>> my_car = Car("yellow", "Beetle", "1966") >>> your_car = Car("red", "Corvette", "1967") >>> print (my_car < your_car) True >>> print (my_car > your_car) False >>> print (my_car == your_car) False >>> print (my_car + your_car) Car yellowred : BeetleCorvette : 3933
, , , Java.
тАУ . Java, Python .
. Python type() isinstance () , :
>>> my_car = Car("yellow", "Beetle", "1966") >>> print(type(my_car)) <class 'car.Car'> >>> print(isinstance(my_car, Car)) True >>> print(isinstance(my_car, Device)) True
Java getClass() instanceof :
Car car = new Car("yellow", "beetle", 1969); System.out.println(car.getClass()); System.out.println(car instanceof Car);
:
class com.realpython.Car true
Python dir() , ( ). , getattr():
>>> print(dir(my_car)) ['_Car__cupholders', '__add__', '__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__', '_voltage', 'color', 'model', 'voltage', 'wheels', 'year'] >>> print(getattr(my_car, "__format__")) <built-in method __format__ of Car object at 0x7fb4c10f5438>
Java , , , .
getFields() . , Car , :
Field[] fields = car.getClass().getFields();
Java , getDeclaredMethods(). get-, , , :
1) getDeclaredMethods()
2) :
:
1 public static boolean getProperty(String name, Object object) throws Exception { 2 3 Method[] declaredMethods = object.getClass().getDeclaredMethods(); 4 for (Method method : declaredMethods) { 5 if (isGetter(method) && 6 method.getName().toUpperCase().contains(name.toUpperCase())) { 7 return true; 8 } 9 } 10 return false; 11 } 12 13
getProperty() тАУ . . true, , false.
Java, Python .
Java- true , , . , getDeclaredMethods() Method. Method invoke(), Method. 7 true, , method.invoke(object).
Python. , Python , , :
>>> for method_name in dir(my_car): ... if callable(getattr(my_car, method_name)): ... print(method_name) ... __add__ __class__ __delattr__ __dir__ __eq__ __format__ __ge__ __getattribute__ __gt__ __init__ __init_subclass__ __le__ __lt__ __ne__ __new__ __reduce__ __reduce_ex__ __repr__ __setattr__ __sizeof__ __str__ __subclasshook__
Python , Java. str () :
>>> for method_name in dir(my_car): ... attr = getattr(my_car, method_name) ... if callable(attr): ... if method_name == '__str__': ... print(attr()) ... Car yellow : Beetle : 1966
, dir(). , getattr(), callable(), . , , str (), .